//用verilog 描述一个4位并串转换器
//制作者：FPGA研究者
//时间：2022年6月17日

/*
module cpal_serial(clk,in,out,rst_n,en);
   input clk,rst_n,en;
	input [3:0] in;
	output reg  out;
	//reg [2:0] tmp;
//	reg  out;
	reg [1:0] count;
always@(posedge clk) begin
       if(!rst_n) begin
		   out<=0;
			count<=0;
			end
		 else if(en) begin
		 if(count==2'b11) begin
		  count<=2'b00;
		 end
		 else begin
		   // out<=in[count];
			 count<=count+1;
			 out<=in[count+1];//有问题，在数据跳变的同时，并行数据的最后一位会出现问题，后面会正常。
			 end
		 end
		else begin 
		  out<=1'bz;
		  count<=0;
		  end
		  
	end
endmodule
*/

module cpal_serial(clk,in,out,rst_n,en);
   input clk,rst_n,en;
	input [3:0] in;
	output reg  out;
	// reg [2:0] tmp;
	 reg [1:0] count;	
always@(posedge clk) begin
   if(!rst_n)	begin
	  out<=0;
	  count<=0;
	  end
	else if(en) begin
	 if(count<3) //注意这里的计数
	    begin
	     count<=count+1;
	     out<=in[count+1];//有问题，在数据跳变的同时，并行数据的最后一位会出现问题，后面会正常。
	    end
		 else
		  begin 
	        count<=2'b00; 
			end
		end
		else begin
		  out<=0;
	     count<=0;
		  end
  end
		  
endmodule
		    
	
	
		  
		   
	

